package com.rchat.pocmini.activity.login;

import android.content.Context;
import android.content.Intent;

import com.aso.common.http.delegate.HttpCallbackImpl;
import com.rchat.pocmini.common.mvp.BaseModel;
import com.rchat.pocmini.common.mvp.BasePresenter;
import com.rchat.pocmini.common.mvp.BaseView;

/**
 * Created by ljd on 2017/7/26.
 */

public interface LoginContract {

    interface View extends BaseView {
        /**
         * 设置账号输入框的text
         *
         * @param account text内容
         */
        void setAccountEditText(String account);

        /**
         * 设置密码输入框的text
         *
         * @param pwd text内容
         */
        void setPwdEditText(String pwd);

        /**
         * 设置自动登录的背景图片
         *
         * @param autoLogin 是否自动登录
         */
        void setAutoLoginBackgroundImage(boolean autoLogin);

        /**
         * 设置记住密码的背景图片
         *
         * @param rememberPwd 是否记住密码
         */
        void setRememberPwdBackgroundImage(boolean rememberPwd);
    }

    abstract class Presenter extends BasePresenter<LoginContract.View, LoginContract.Model> {

        /**
         * 登录
         *
         * @param userName 账号
         * @param pwd      密码
         */
        abstract void login(String userName, String pwd);


        /**
         * 如果用户设置了自动登录，则自动自行登录
         *
         * @param context 上下文
         */
        abstract void autoLoginIfUserCheck(Context context);


        /**
         * 跳转到注册界面
         */
        abstract void gotoRegisterActivity();

        /**
         * 跳转到忘记密码界面
         */
        abstract void gotoForgetPwdActivity();

        /**
         * 跳转到账号充值界面
         */
        abstract void gotoRechargeActivity();

        /**
         * 用户在注册界面注册完后，点击直接登录，则执行此方法
         *
         * @param data 包含账号密码的intent
         */
        abstract void loginFromRegisterActivity(Intent data);

        /**
         * 设置自动登录的背景图片
         */
        abstract void setAutoLoginBackgroundImage();

        /**
         * 设置记住密码的背景图片
         */
        abstract void setRememberPwdBackgroundImage();

        /**
         * 用户点击自动登录
         */
        abstract void setIvAutoLoginCheck();

        /**
         * 用户点击记住密码
         */
        abstract void setIvRememberPwdCheck();
    }

    interface Model extends BaseModel {
        /**
         * 登录
         *
         * @param account  用户账号
         * @param pwd      账号密码
         * @param callback 请求回调
         */
        void login(String account, String pwd, HttpCallbackImpl callback);

        /**
         * 保存账号
         *
         * @param context      上下文
         * @param accountKey   键
         * @param accountValue 值
         */
        void saveAccount(Context context, String accountKey, String accountValue);

        /**
         * 保存密码
         *
         * @param context  上下文
         * @param pwdKey   键
         * @param pwdValue 值
         */
        void savePwd(Context context, String pwdKey, String pwdValue);
    }
}
